package com.bzkj.msfx.mapper;

import com.bzkj.msfx.domain.relationMsfx.CodeRelation;
import com.bzkj.msfx.domain.relationMsfx.RelationList;
import org.apache.ibatis.annotations.Param;

import java.util.ArrayList;
import java.util.HashMap;

/**
 * @projectName: bzkj-wms
 * @package: com.bzkj.mapper
 * @className: MsfxRelationMapper
 * @description: 码上放心关联关系文件管理持久层
 * @author: C1309
 * @createDate: 2024年10月24日
 * @version: v1.0
 */
public interface MsfxRelationMapper {
    /**
     * 查询关联关系单据列表（单个单据导出时可复用）
     *
     * @param entId      工厂ID
     * @param beginTime  开始时间
     * @param endTime    结束时间
     * @param orderState 订单状态
     * @param relationId 单据id
     * @return 查询结果
     */
    ArrayList<RelationList> queryRelationList(@Param("entId") String entId,
                                              @Param("beginTime") String beginTime,
                                              @Param("endTime") String endTime,
                                              @Param("orderState") String orderState,
                                              @Param("relationId") String relationId);


    /**
     * 查询任务编号下的批号信息
     *
     * @param id    单据id
     * @param table 表名
     * @return 查询结果
     */
    ArrayList<HashMap<String, String>> selectBatch(@Param("id") String id, @Param("table") String table);


    /**
     * 查询当前任务批号下的追溯码信息
     *
     * @param packLayer    追溯码级别
     * @param batchNo      批号
     * @param madeDate     生产日期
     * @param validateDate 有效期至
     * @param id           单据id
     * @param table        表名
     * @param flag         查询类型
     * @return 查询结果
     */
    ArrayList<CodeRelation> selectCode(@Param("packLayer") int packLayer,
                                       @Param("batchNo") String batchNo,
                                       @Param("madeDate") String madeDate,
                                       @Param("validateDate") String validateDate,
                                       @Param("id") String id,
                                       @Param("table") String table,

                                       @Param("isSelect") String flag);

    /**
     * 更新关联关系文件状态
     *
     * @param relationId 关联关系单据ID
     * @return 更新结果
     */
    int updateOrderStatus(String relationId);

    /**
     * 删除关联关系单据信息
     *
     * @param relationId 关联关系单据ID
     * @return 删除结果
     */
    int deleteByIds(String relationId);

    /**
     * 删除关联关系单据明细信息
     *
     * @param relationId 关联关系单据ID
     * @param table 关联关系明细信息所在的表
     * @return 删除结果
     */
    int deleteRelationDetail(@Param("relationId") String relationId, @Param("table") String table);
}
